package com.ruochen.updatetest;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.vector.update_app.UpdateAppBean;
import com.vector.update_app.UpdateAppManager;
import com.vector.update_app.UpdateCallback;
import com.vector.update_app.listener.ExceptionHandler;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        checkUpdate();
    }

    private void checkUpdate() {
        new UpdateAppManager
                .Builder()
                .setActivity(this)
                .setHttpManager(new OkGoUpdateHttpUtil())
                //必须设置，更新地址
                .setUpdateUrl("https://ruochen.com/demo/json/json.txt")
                //全局异常捕获
                .handleException(new ExceptionHandler() {
                    @Override
                    public void onException(Exception e) {
                        e.printStackTrace();
                    }
                })
                .setPost(false)
                //设置头部，不设置显示默认的图片，设置图片后自动识别主色调，然后为按钮，进度条设置颜色
                .setTopPic(R.mipmap.bg_update_dialog_head)
                //为按钮，进度条设置颜色。
                .setThemeColor(0xffffac5d)
                .build()
                //检测是否有新版本
                .checkNewApp(new UpdateCallback() {
                    @Override
                    protected UpdateAppBean parseJson(String json) {
                        UpdateAppBean updateAppBean = new UpdateAppBean();
                        /*try {
                            JSONObject jsonObject = new JSONObject(json);
                            jsonObject = jsonObject.getJSONObject("data");
                            final String newVersion = jsonObject.optString("version");
                            String size = jsonObject.optString("size");
                            size = StringUtils.isTrimEmpty(size) ? "0B" : Formatter.formatFileSize(mContext, Long.parseLong(size));
                            updateAppBean
                                    //（必须）是否更新 Yes,No
                                    .setUpdate(jsonObject.optInt("isUpdate") == 0 ? "No" : "Yes")
                                    //（必须）新版本号，
                                    .setNewVersion(newVersion)
                                    //（必须）下载地址
                                    .setApkFileUrl(GlideUtil.getUrlByFileId(jsonObject.optString("fileId")))
                                    //测试下载路径是重定向路径
                                    .setUpdateDefDialogTitle(String.format("AppUpdate 是否升级到%s版本？", newVersion))
                                    //（必须）更新内容
                                    .setUpdateLog(jsonObject.optString("remark") == null ? "发现新版本" : jsonObject.optString("remark"))
                                    //大小，不设置不显示大小，可以不设置
                                    .setTargetSize(size)
                                    //是否强制更新，可以不设置
                                    .setConstraint(true);
                            //设置md5，可以不设置
                            //.setNewMd5(jsonObject.optString("new_md5"));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }*/
                        return updateAppBean;
                    }

                    @Override
                    protected void hasNewApp(UpdateAppBean updateApp, UpdateAppManager updateAppManager) {
                        updateAppManager.showDialogFragment();
                    }
                });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}